package com.librelato.negocio;

import java.util.List;
import java.util.Map;

import com.librelato.bean.ChamadoBean;
import com.librelato.bean.UsuarioBean;
import com.librelato.negocio.interfaces.IUsuarioServico;
import com.librelato.persistencia.UsuarioDao;
import com.librelato.persistencia.interfaces.IDaoGenerico;
import com.librelato.persistencia.interfaces.IUsuarioDao;

public class UsuarioServico<P extends UsuarioBean> extends ServicoGenerico<P> implements
		IUsuarioServico<P> {
	
	private final IUsuarioDao<P> dao;
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public UsuarioServico() {
		this.dao = new UsuarioDao();
	}
	
	public void excluir(P p) throws Exception {};
	
	public void editar(P p) throws Exception {};

	@Override
	public P salvar(final P usuario) throws Exception {
		this.preSalvar(usuario);
		return this.dao.salvar(usuario);
	}
	
	@Override
	public List<P> buscaResponsaveis(String setor, P p) throws Exception {
		return this.dao.buscaResponsaveis(setor, p);
	}
	
	@Override
	public List<String> buscaEmails(ChamadoBean chamado, String acaoUsuario) throws Exception {
		// TODO Auto-generated method stub
		return this.dao.buscaEmails(chamado,acaoUsuario);
	}

	@Override
	public IDaoGenerico<P> getDao() {
		return this.dao;
	}

	@Override
	public void preSalvar(P p) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void posSalvar(P p) {
		// TODO Auto-generated method stub
		
	}
	
	public void trocarSenha(P p, String senhaNova) throws Exception {
		this.dao.trocarSenha(p, senhaNova);
	}
	
	public UsuarioBean logar(P p) throws Exception{		
		return this.dao.verLogin(p);
	}

	public List<P> buscaSolicitantesAtendidos(Map<String, Object> param) throws Exception{
		return this.dao.buscaSolicitantesAtendidos(param);
	}
	
	@Override
	public List<P> buscaResponsaveisAtendidos(Map<String, Object> param)
			throws Exception {
		return this.dao.buscaResponsaveisAtendidos(param);
	}

	@Override
	public List<P> buscaSolicitantesSetor(UsuarioBean usuario) throws Exception {
		return this.dao.buscaSolicitantesSetor(usuario);
	}
	
	@Override
	public List<P> buscaUsuariosCadastrados(Map<String, String> param)
			throws Exception {
		return this.dao.buscaUsuariosCadastrados(param);
	}
}
